package PDFd.Layer;

import android.graphics.Canvas;

/**
* <p>Title: Layer</p>
* <p>Description:The basic layer. This provides behavior to set the size and location of a layer. 
* Any additional features required by the layer must be provided by the LayerKeyEvent 
* interface or LayerMotionEvent </p>
* @author Matt, Tom, Andrew, Kong
* @email matt.mckay@my.uwrf.edu,tom.florin@my.uwrf.edu,
* andrew.kathan@my.uwrf.edu,kong.xiong-1@my.uwrf.edu
* @date December 1st,2011*/
public interface Layer {
	/**
	 * Sets the size of this layer's canvas. The layer will not draw outside this space.
	 * @param p the Size of the canvas
	 */
	public void setCanvasSize(Point p);
	/**
	 * Sets the distance from the parent object, starting top left
	 * @param p the Distance from parent
	 */
	public void setParentOffset(Point p);
	/**
	 * Returns the layer's canvas size
	 * @return Point
	 */
	public Point getCanvasSize();
	/**
	 * Returns the layer's offset
	 * @return Point
	 */
	public Point getParentOffset();
	/**
	 * Notifies the layer that the size and offset are now final
	 */
	public void finalizeSizeAndOffset();
	/**
	 * Notifies when a layer goes in and out of focus.
	 * This could be useful to know if we should provide a blinking text cursor.
	 * @param inFocus If the layer is in focus
	 */
	public void layerInFocus(Boolean inFocus);
	/**
	 * Renders this layer to the Canvas.
	 * @param c The canvas the document should rasterize to.
	 */
	public void rasterize(Canvas c);
	/**
	 * A user friendly name that accurately describes what this layer is.
	 * @return Friendly name
	 */
	public String getDisplayName();
	
}
